
#ifndef _MEMBER_BSHAPE_H_
#define _MEMBER_BSHAPE_H_

#include <BMatrix>
#include <BShape>
#include <BMaterial>
#include <BTexture>
#include <BProgram>

#define shape_member(shape)		((member_BShape*)((BShape*)shape)->_ptr)

namespace BWE
{
	class member_BShape
	{
	public:
		member_BShape(BShape* shape);
		~member_BShape();

		void render(BRender& render);

		BShape*					boss;
		bool					visible;
		bool					collible;
		bool					transparent;

		BMatrix					matrix;
		BVector					scale;
		BColor					color;
		BMaterialHolder			material;
		BProgramHolder			program;
		BTextureHolder			texture;
		BArray<BTextureHolder>	textures;

		bool					lighting;
		bool					depthTest;
		bool					cullBack;
		bool					normalize;
		bool					pointSmooth;
		int						pointSize;
		bool					lineSmooth;
		int						lineWidth;
		bool					polygonSmooth;
		PolygonMode				polygonMode;

		BBox					box;
		BSpace					space;
		bool					dirty;
		bool					dirtySpace;
	};
}

#endif